package com.kexio.enterprise.observability.logging.query;

import com.kexio.enterprise.observability.logging.annotation.OperateLog;

import java.time.LocalDateTime;

/**
 * 日志查询条件
 * 
 * @author Kexio
 * @since 1.0.0
 */
public class LogQueryCriteria {
    private String module;
    private String operation;
    private OperateLog.OperationType type;
    private OperateLog.LogLevel level;
    private Long userId;
    private String username;
    private Long tenantId;
    private String businessKey;
    private String[] tags;
    private LocalDateTime startTime;
    private LocalDateTime endTime;
    private Boolean success;
    private String traceId;

    // Getters and Setters
    public String getModule() { return module; }
    public void setModule(String module) { this.module = module; }
    
    public String getOperation() { return operation; }
    public void setOperation(String operation) { this.operation = operation; }
    
    public OperateLog.OperationType getType() { return type; }
    public void setType(OperateLog.OperationType type) { this.type = type; }
    
    public OperateLog.LogLevel getLevel() { return level; }
    public void setLevel(OperateLog.LogLevel level) { this.level = level; }
    
    public Long getUserId() { return userId; }
    public void setUserId(Long userId) { this.userId = userId; }
    
    public String getUsername() { return username; }
    public void setUsername(String username) { this.username = username; }
    
    public Long getTenantId() { return tenantId; }
    public void setTenantId(Long tenantId) { this.tenantId = tenantId; }
    
    public String getBusinessKey() { return businessKey; }
    public void setBusinessKey(String businessKey) { this.businessKey = businessKey; }
    
    public String[] getTags() { return tags; }
    public void setTags(String[] tags) { this.tags = tags; }
    
    public LocalDateTime getStartTime() { return startTime; }
    public void setStartTime(LocalDateTime startTime) { this.startTime = startTime; }
    
    public LocalDateTime getEndTime() { return endTime; }
    public void setEndTime(LocalDateTime endTime) { this.endTime = endTime; }
    
    public Boolean getSuccess() { return success; }
    public void setSuccess(Boolean success) { this.success = success; }
    
    public String getTraceId() { return traceId; }
    public void setTraceId(String traceId) { this.traceId = traceId; }
}
